home *** CD-ROM | disk | FTP | other *** search
/ Publication 9 / Publication_09_1996_High-Tech_de_Side_B.d64 / basic - piano (.txt) next >
Commodore BASIC  |  2023-02-26  |  13KB  |  524 lines

  1. 100 rem piano
  2. 130 :
  3. 150 :
  4. 170 :
  5. 180 print"[147]":poke53281,15:poke53280,12:print"[144]"
  6. 190 dimn(255),p(255)
  7. 200 gosub4140:rem* initialize
  8. 210 gosub2380: rem* title
  9. 220 gosub1030: rem* piano keyboard
  10. 230 ifno=0thengosub4870:rem* tune
  11. 240 goto3410:  rem* menu #1
  12. 250 gosub1230: rem* keyboard letters
  13. 260 gosub2900: rem* instructions
  14. 270 gosub2770:rem* "enter notes"
  15. 280 gosub1640:rem* input notes
  16. 290 gosub2540:rem* erase letters
  17. 300 gosub1320:rem* play song
  18. 310 gosub700: rem* menu #2
  19. 320 goto3410
  20. 330 rem start all voices
  21. 340 rem"[184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184]
  22. 350 [151]sid[170]24,15:[139]n[177]lk[167][142]
  23. 360 [151]pa(vc),fr(n)[173]256:[151]pb(vc),fr(n)[175]255
  24. 370 [151]sid[170]4[170]7[172]vc,wv(vc):pv[178]vc:vc[178]vc[170]1:[139]vc[178]3[167]vc[178]0
  25. 380 [142]
  26. 390 [143] sid setup
  27. 400 [143]"frefrefrefrefrefrefrefrefre
  28. 410 sid=54272:restore
  29. 420 forx=0to2
  30. 430 read at(x),de(x),su(x),re(x)
  31. 440 read pw(x),wv(x)
  32. 450 ad(x)=at(x)*16+de(x)
  33. 460 sr(x)=su(x)*16+re(x)
  34. 470 next x:re=0
  35. 480 data 00,00,15,11,1000,17
  36. 490 data 00,00,15,11,1000,17
  37. 500 data 00,00,15,11,1000,17
  38. 510 forx=0to2:y=7*x:ifre<re(x)thenre=re(x)
  39. 520 pokesid+5+y,ad(x)
  40. 530 pokesid+6+y,sr(x)
  41. 540 pokesid+2+y,pw(x)/256
  42. 550 pokesid+3+y,pw(x)and255
  43. 560 pokesid+4+y,8:rem reset osc.
  44. 570 pokesid+4+y,wv(x)-1:rem null
  45. 580 next x:gosub5180
  46. 590 k$="awsedftgyhujkolp:;*=^"+chr$(13)+"0":rem 0=pause
  47. 600 lk=len(k$):kk=2^(1/12)
  48. 610 f1=523.251132:rem 1st note
  49. 620 dim fr(lk),k(255)
  50. 630 fori=1tolk-1
  51. 640 k=asc(mid$(k$,i,1)):k(k)=i
  52. 650 fr(i)=5.8*f1+30
  53. 660 f1=f1*kk:next i
  54. 670 forx=0to2:y=7*x:pa(x)=sid+1+y:pb(x)=sid+y:next
  55. 680 k(i)=0:fr(i)=0:rem pause=note '0'
  56. 690 return
  57. 700 rem****************
  58. 710 rem*   menu #2    *
  59. 720 rem****************
  60. 730 print""spc(s1)"      return[146] druecken zum wiederbeginn"
  61. 740 printspc(s1)"1[146]-wiederbeginn?        2[146]-add notes?"
  62. 750 printspc(s1)"3[146]-korrigieren falsche note?  4[146]-save on disk?"
  63. 760 printspc(s1)"5[146]-save on tape?      6[146]-change intro?"
  64. 770 printspc(s1)"7[146]-stimmwechsel?      8[146]-other change?"
  65. 780 printspc(s1)"  [184][184][184][184][184][184][184][184][184][184][184][184][184] waehle![146][184][184][184][184][184][184][184][184][184][184][184][184][184]":gosub5180
  66. 790 geta$:ifa$<>""then790
  67. 800 geta$:ifa$=""then800
  68. 810 gosub3710:ifa$=chr$(13)thengoto3410
  69. 820 ifval(a$)=0then730
  70. 830 onval(a$)gosub1320,3610,3800,3000,1890,850,4490,4570
  71. 840 goto730
  72. 850 print"[147]bitte warten ich speichere ab..."
  73. 860 sv=6*4096-2:i=0
  74. 870 i=i+1:pokesv+2*i,n(i):pokesv+2*i+1,p(i):print"note   [157][157][157]"i
  75. 880 ifi<mthen870
  76. 890 forj=1to20:pokesv+2*i+j,0:next
  77. 900 print"[147]  aendern data......"
  78. 910 poke53281,6
  79. 920 print"50009data"m:poke198,3:poke631,13:poke632,13:poke633,13
  80. 930 print"k=50010:m="m":i=-19:sv=6*4096-1"
  81. 940 print"goto620":end
  82. 950 i=i+20:s$="":ifi>2*mthenprint"[147][144]":poke53281,15:list50300-50305
  83. 960 print"[147]";:poke198,3:poke631,13:poke632,13:poke633,13
  84. 970 print""k"data";
  85. 980 forj=0to9:s=peek(sv+i+2*j):p=peek(sv+i+2*j+1)
  86. 990 a$=mid$(str$(s),2):b$=mid$(str$(p),2)
  87. 1000 s$=s$+a$+","+b$+",":next
  88. 1010 prints$+"[157] ":k=k+1:print"k="k":m="m":i="i":sv="sv
  89. 1020 print"goto620":end
  90. 1030 rem*********************
  91. 1040 :
  92. 1050 rem** create keyboard **
  93. 1060 :
  94. 1070 rem*********************
  95. 1080 n=1
  96. 1090 p1$="[146][144][167]":p2$=p1$:p3$=p1$
  97. 1100 k1$="[144]  [144] ":fori=1to12:p1$=p1$+k1$:next
  98. 1110 p1$=p1$+"[144]  [144] [146]"
  99. 1120 k2$="  [146][144][170]":fori=1to13:p2$=p2$+k2$:next:l=len(p2$):p2$=left$(p2$,l-1)
  100. 1130 p3$=p3$+"  [146][144][167] [146][144][167] [146][144][167] "
  101. 1140 print"":fori=1to12:printp2$:next
  102. 1150 print"":fori=1to5:printp1$;:next
  103. 1160 print"":fori=1to5:printp3$;
  104. 1170 gosub330:n=n+5:forpp=1to100:next
  105. 1180 next
  106. 1190 print"[146][144][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164]"
  107. 1200 print"";
  108. 1210 print"[144][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163]"
  109. 1220 gosub1540:return
  110. 1230 rem**********************
  111. 1240 :
  112. 1250 rem** keyboard letters **
  113. 1260 :
  114. 1270 rem**********************
  115. 1280 print""spc(s1)"   w[146][165] e[146]     t[146]  y[146]  u[146]     o[146]  p[146]     *[146]  ^"
  116. 1290 print""spc(s1);
  117. 1300 print"  a[146]  s[146]  d[146]  f[146]  g[146]  h[146]  j[146]  k[146]  l[146]  :[146]  ;[146]  =[146] rtn"
  118. 1310 return
  119. 1320 rem****************
  120. 1330 :
  121. 1340 rem** play music **
  122. 1350 :
  123. 1360 rem****************
  124. 1370 pokesid+24,15:zz=64
  125. 1380 forq=1tom:n=n(q):p=p(q)
  126. 1390 aa=ti:sp=0:ifn>=23then1410
  127. 1400 sp=sp(n):h=h(n)
  128. 1410 print"    [157][157][157][157]"q
  129. 1420 gosub330:pokev3,0
  130. 1430 ifsp<>0then1480
  131. 1440 ifti<aa+pthen1440
  132. 1450 goto1520
  133. 1460 :
  134. 1470 rem* play piano key *
  135. 1480 x=sp>255:y=sp>zz:pokev0,-4*x:sp=sp+255*x:ss=sp+zz*(sp>zz)
  136. 1490 pokev1,sp:pokev2,h:pokev4,ss:pokev5,h:pokev3,4-8*y
  137. 1500 ifti<aa+p then1500
  138. 1510 gosub5140
  139. 1520 next:forpp=1to1000:next:pokev3,0
  140. 1530 gosub5180:return
  141. 1540 rem*****************
  142. 1550 :
  143. 1560 rem** piano gliss **
  144. 1570 :
  145. 1580 rem*****************
  146. 1590 pokesid,0:    return:print@*!:  pokesid+24,15
  147. 1600 forpp=1to10:r=rnd(1):n=23*r+1:gosub330
  148. 1610 pokev1,255*r:pokev2,100+30*r:pokev3,4:forqq=1to10:next:next:pokev3,0
  149. 1620 gosub5140:forpp=0to500:next
  150. 1630 gosub5180:return
  151. 1640 rem*****************
  152. 1650 :
  153. 1660 rem** input notes **
  154. 1670 :
  155. 1680 rem*****************
  156. 1690 m=0:n=0:goto1870
  157. 1700 m=m+1:m$=mid$(str$(m),2):print"   [157][157][157]"m$
  158. 1710 getn$:ifn$=""thengosub5140:goto1710
  159. 1720 nn=asc(n$+z$):aa=ti
  160. 1730 ifnn=n0thenm=m-1:gosub3710:return
  161. 1740 ifnn=n1thenm=m-1:goto1710
  162. 1750 m$=mid$(str$(m),2)
  163. 1760 print"   [157][157][157]"m$
  164. 1770 n=k(nn)
  165. 1780 gosub330:sp=sp(n):h=h(n)
  166. 1790 ifsp=0then1820
  167. 1800 x=sp>255:pokev0,-4*x:sp=sp+255*x
  168. 1810 pokev1,sp:pokev2,h:pokev3,4
  169. 1820 ifpeek(kb)<>64then1820:rem wait
  170. 1830 p=ti-aa
  171. 1840 gosub5140
  172. 1850 pokev3,0
  173. 1860 geta$:ifa$<>""then1860
  174. 1870 n(m)=n:p(m)=p:ifm>499thengosub3710:return
  175. 1880 goto1700
  176. 1890 rem*************************
  177. 1900 :
  178. 1910 rem** save a song on tape **
  179. 1920 :
  180. 1930 rem*************************
  181. 1940 gosub3710
  182. 1950 printsd$"name des liedes ";
  183. 1960 inputnm$
  184. 1970 open1,1,1,nm$
  185. 1980 print#1,m:print#1,z$
  186. 1990 fori=1tom
  187. 2000 print#1,n(i)
  188. 2010 print#1,p(i)
  189. 2020 next:close1
  190. 2030 gosub3710
  191. 2040 return
  192. 2050 rem*************************
  193. 2060 :
  194. 2070 rem** call song from tape **
  195. 2080 :
  196. 2090 rem*************************
  197. 2100 printsd$
  198. 2110 input"name deines liedes[214][157][157][157]";nm$
  199. 2120 ifnm$="[214]"then2100
  200. 2130 gosub3710
  201. 2140 gosub5140
  202. 2150 open1,1,0,nm$
  203. 2160 input#1,m:input"1,z$
  204. 2170 [129]i[178]1[164]m
  205. 2180 [132]1,n(i)
  206. 2190 [132]1,p(i)
  207. 2200 [130]
  208. 2210 [160]1
  209. 2220 [141]3710:[153]sd$[170]""[170]nm$
  210. 2230 [141]1320
  211. 2240 [142]
  212. 2250 [143]****************************
  213. 2260 :
  214. 2270 [143]** input "corrected" note **
  215. 2280 :
  216. 2290 [143]****************************
  217. 2300 [161]n$
  218. 2310 aa[178]ti:[161]n$:sn[178][194](kb):[139]n$[178]""[167]2310
  219. 2320 nn[178][198](n$):n[178]k(nn)
  220. 2330 [141]330
  221. 2340 [143]* wait for note to change *
  222. 2350 [139][194](kb)[178]sn[167]2350
  223. 2360 p[178][181]((ti[171]aa)[173]2[170]1)
  224. 2370 [141]5180:[142]
  225. 2380 [143]***********
  226. 2390 :
  227. 2400 [143]** title **
  228. 2410 :
  229. 2420 [143]***********
  230. 2430 [153]sd$"stop"
  231. 2440 [153][166]12)"  (NULL)wait  wait    wait  wait  wait    wait"
  232. 2450 [153][166]12)" wait  wait  wait  wait  wait  wait  wait  wait  wait"
  233. 2460 [153][166]12)" wait  wait  wait    wait  (NULL) wait  wait  wait"
  234. 2470 [153][166]12)"  waitstep  wait  wait  wait  wait(NULL) wait  wait  wait"
  235. 2480 [153][166]12)" wait    wait  wait  wait  wait  wait    "
  236. 2490 [129]pp[178]0[164]19:[151]1984[170]pp,102:[151]2023[171]pp,102:[130]
  237. 2500 [129]pp[178]0[164]19:[151]56256[170]pp,6:[151]56295[171]pp,6:[130]
  238. 2510 [129]pp[178]0[164]19:[151]1024[170]pp,102:[151]1063[171]pp,102:[130]
  239. 2520 [129]pp[178]0[164]19:[151]55296[170]pp,6:[151]55335[171]pp,6:[130]
  240. 2530 [142]
  241. 2540 [143]******************
  242. 2550 :
  243. 2560 [143]** erase letters *
  244. 2570 :
  245. 2580 [143]******************
  246. 2590 [129]pp[178]0[164]39:[151]crt[170]pp,32:[130]
  247. 2600 [129]pp[178]0[164]39:[151]crt[170]14[172]wd[170]pp,32:[130]
  248. 2610 [142]
  249. 2620 [143]************************
  250. 2630 :
  251. 2640 [143]**  keyboard/no sound **
  252. 2650 :
  253. 2660 [143]************************
  254. 2670 [129]j[178]1[164]6:[153]"":[129]k[178]1[164]j:[153]"";:[130]:[153][166]s1);
  255. 2680 [129]i[178]1[164]13:[153]"  wait ";:[130]:[130]
  256. 2690 [129]j[178]1[164]6:[153]"":[129]k[178]1[164]j:[153]"";:[130]:[153][166]s1);
  257. 2700 [129]i[178]1[164]13:[153]"fn then";:[130]:[130]
  258. 2710 [129]j[178]1[164]6:[153]"":[129]k[178]1[164]j:[153]"";:[130]
  259. 2720 [153][166]s1)"fn "[166]6)"thenfn"[166]10)"thenfn"[166]7)"thenfn":[130]
  260. 2730 [153]""[166]s1)"tototototototototototototototototototototototototototototototototototototototo"
  261. 2740 [153]""[166]s1);
  262. 2750 [153]"usrusrusrusrusrusrusrusrusrusrusrusrusrusrusrusrusrusrusrusrusrusrusrusrusrusrusrusrusrusrusrusrusrusrusrusrusrusrusr"
  263. 2760 [142]
  264. 2770 [143]*****************
  265. 2780 :
  266. 2790 [143]* 'enter notes' *
  267. 2800 :
  268. 2810 [143]*****************
  269. 2820 [153]"":c$[178]"wait"
  270. 2830 [141]5140:[129]l[178]1[164]10
  271. 2840 [153][166]s1)c$"noteneingabe"
  272. 2850 [153]"on";
  273. 2860 [139]c$[178]"wait"[167]c$[178]"":[137]2880
  274. 2870 c$[178]"wait"
  275. 2880 [129]k[178]1[164]100:[130]:[130]
  276. 2890 [153]:[142]
  277. 2900 [143]******************
  278. 2910 :
  279. 2920 [143]** instructions **
  280. 2930 :
  281. 2940 [143]******************
  282. 2950 [153]""
  283. 2960 [153][166]s1)"               terminate with a "[199](34)"."[199](34)"   "
  284. 2970 [153][166]s1)"       enter a "[199](34)"0"[199](34)" fuer  pause.       "
  285. 2980 [153][166]s1)"      after a bad note enter "[199](34)"-"[199](34)"      "
  286. 2990 [142]
  287. 3000 [143]*************************
  288. 3010 :
  289. 3020 [143]** save a song on disk **
  290. 3030 :
  291. 3040 [143]*************************
  292. 3050 [141]3710:nw[178]wv(0)
  293. 3060 [153]sd$"name of the song";
  294. 3070 [133]nm$:[139][200](nm$,1)[179][177]" "[167]nm$[178]" "[170]nm$
  295. 3080 [141]3710
  296. 3090 [153]sd$"which drive ";
  297. 3100 [133]"   0cmdcmdcmd";dr$:d0$[178]dr$
  298. 3110 [141]3710
  299. 3120 [153]sd$"replace an existing song";:[133]"   ncmdcmdcmd";a$
  300. 3130 [139][200](a$,1)[178]"y"[167]d0$[178]"@"[170]dr$
  301. 3140 [159]15,8,15:r$[178][199](13)
  302. 3150 [159]2,8,2,d0$[170]":"[170]nm$[170]",s,w"
  303. 3160 [141]4810:[139]e0[179][177]0[167]3200
  304. 3170 [152]2,m;r$;nw;r$
  305. 3180 [129]i[178]1[164]m
  306. 3190 [152]2,n(i);r$;p(i);r$:[130]
  307. 3200 [160]2:[160]15
  308. 3210 [141]3710:[142]
  309. 3220 [143]*************************
  310. 3230 :
  311. 3240 [143]** call song from disk **
  312. 3250 :
  313. 3260 [143]*************************
  314. 3270 [141]5210:[141]3710
  315. 3280 [153]sd$;
  316. 3290 [133]"name your song:   (NULL)cmdcmdcmd";nm$:[139]nm$[178]"(NULL)"[167]3280
  317. 3300 [139][200](nm$,1)[179][177]" "[167]nm$[178]" "[170]nm$
  318. 3310 [141]3710:[159]15,8,15:[153]sd$;
  319. 3320 [159]2,8,2,dr$[170]":"[170]nm$[170]",s,r"
  320. 3330 [141]4810:[139]e0[179][177]0[167][160]2:[160]15:[142]
  321. 3340 [132]2,m,nw
  322. 3350 [129]i[178]1[164]m
  323. 3360 [132]2,a$,b$
  324. 3370 n(i)[178][197](a$):p(i)[178][197](b$):[130]
  325. 3380 [160]2:[160]15:[141]4550
  326. 3390 [141]3710:[153]sd$[170]""[170]nm$
  327. 3400 [141]1320:[141]3710:[142]
  328. 3410 [143]***************
  329. 3420 [143]*   menu #1   *
  330. 3430 [143]***************
  331. 3440 [141]3710:[141]2540:[141]5180
  332. 3450 [153]sd$"1wait:lied von diskette laden"
  333. 3460 [153][166]s1)"2wait:lied von band laden"
  334. 3470 [153][166]s1)"3wait:komponieren"
  335. 3480 [153][166]s1)"4wait:ende"
  336. 3490 [129]i[178]1[164]3
  337. 3500 [153]"on                                       ":[129]pp[178]1[164]100:[130]
  338. 3510 [153]"on  frefrefrefrefrefrefrefrefrefrefrefrefre waehle !waitfrefrefrefrefrefrefrefrefrefrefrefre":[129]pp[178]1[164]100:[130]
  339. 3520 [130]
  340. 3530 [141]5180
  341. 3540 [161]a$:[139]a$[178]""[167]3540
  342. 3550 [141]3710
  343. 3560 [139][197](a$)[178]0[167]3450
  344. 3570 [145][197](a$)[137]3590,3600,250
  345. 3580 [153]sd$:[151]sid[170]24,0:[128]
  346. 3590 [141]3220:[137]700
  347. 3600 [141]2050:[137]700
  348. 3610 [143]*************
  349. 3620 :
  350. 3630 [143]* add notes *
  351. 3640 :
  352. 3650 [143]*************
  353. 3660 :
  354. 3670 [141]3710:[141]1230
  355. 3680 [141]2900:[141]2770
  356. 3690 [141]1700:[141]2540
  357. 3700 [141]1320:[142]
  358. 3710 [143]**************
  359. 3720 :
  360. 3730 [143]**  erase   **
  361. 3740 :
  362. 3750 [143]**************
  363. 3760 [153]"";
  364. 3770 [129]t[178]1[164]9:[153]cl$:[130]
  365. 3780 [141]2540
  366. 3790 [153]"";:[142]
  367. 3800 [143]**********************
  368. 3810 :
  369. 3820 [143]** remove bad notes **
  370. 3830 :
  371. 3840 [143]**********************
  372. 3850 [141]3710
  373. 3860 [153]sd$" press @wait when bad note is played.     "
  374. 3870 [153][166]s1)"there are "m" notes.."
  375. 3880 [153][166]s1)"start at note#";:[133]"   spc(cmdcmdcmd";pz
  376. 3890 [153][166]s1)"speed of display(1 to 10:1=fast)";:[133]"   spc(cmdcmdcmd";py
  377. 3900 [129]q[178]pz[164]m:n[178]n(q):p[178]p(q)
  378. 3910 aa[178]ti:sp[178]0:[139]n[177][178]23[167]3930
  379. 3920 sp[178]sp(n):h[178]h(n)
  380. 3930 [153]"    cmdcmdcmdcmd"q
  381. 3940 [141]330
  382. 3950 [139]sp[179][177]0[167]3980
  383. 3960 [139]ti[179]aa[170]p[167]3960
  384. 3970 [137]4030
  385. 3980 x[178]sp[177]255:[151]v0,[171]4[172]x:sp[178]sp[170]255[172]x
  386. 3990 [151]v1,sp:[151]v2,h:[151]v3,4
  387. 4000 [139]ti[179]aa[170]p [167]4000
  388. 4010 [141]5140
  389. 4020 [151]v3,0
  390. 4030 [129]k[178]1[164]10[172]py
  391. 4040 [161]n$:bn[178][198](n$[170]z$)
  392. 4050 [139]bn[178]n2[167]k[178]100:sq[178]q:q[178]m
  393. 4060 [130]:[130]
  394. 4070 [141]3710
  395. 4080 [141]1230
  396. 4090 [153]sd$" please enter correct note #"sq
  397. 4100 [141]2250
  398. 4110 n(sq)[178]n::p(sq)[178]p:[141]3710
  399. 4120 [141]1320
  400. 4130 [141]5140:[141]2540:[142]
  401. 4140 [143]*******************
  402. 4150 :
  403. 4160 [143]**  initialize   **
  404. 4170 :
  405. 4180 [143]*******************
  406. 4190 [141]2380:z$[178][199](0)
  407. 4200 [141]390:ps[178][198]("0")
  408. 4210 kb[178]203
  409. 4220 sd$[178]""
  410. 4230 n0[178][198]("."):n1[178][198]("-"):n2[178][198]("@"):wd[178]40:crt[178]1024
  411. 4240 vd[178]53248
  412. 4250 v0[178]vd[170]16:v1[178]vd[170]4:v2[178]vd[170]5:v3[178]vd[170]21
  413. 4260 v4[178]vd[170]6:v5[178]vd[170]7
  414. 4270 d(0)[178]55295[170]10[172]wd:d(1)[178]55295[170]5[172]wd
  415. 4280 d3[178]crt[170]14[172]wd:d4[178]d3[170]wd[171]1
  416. 4290 cr(1)[178]1:cr(0)[178]0
  417. 4300 [143]*****************************
  418. 4310 :
  419. 4320 [143]**spaces for keyboard notes**
  420. 4330 :
  421. 4340 [143]*****************************
  422. 4350 [134]sp(255),h(255)
  423. 4360 [129]i[178]1[164]lk
  424. 4370 [135]sp,h:sp(i)[178]8[172]sp:h(i)[178]130[171]30[172]h:[130]:sp(0)[178]0
  425. 4380 [141]5180
  426. 4390 [131]3,0,4,1,6,0,7,1,9,0,12,0,13,1,15,0,16,1,18,0,19,1,21,0
  427. 4400 [131]24,0,25,1,27,0,28,1,30,0,33,0,34,1,36,0,37,1,39,0,0,0
  428. 4410 [153][166]11)"eine demonstration? "
  429. 4420 cl$[178]"                                       "
  430. 4430 br$[178]"                                        waitstop"
  431. 4440 [161]a$:[139]a$[178]""[167]4440
  432. 4450 [153]"load"
  433. 4460 [139]a$[179][177]"j"[167]no[178]1
  434. 4470 [141]4600
  435. 4480 [142]
  436. 4490 [143] change voices
  437. 4500 [143]"frefrefrefrefrefrefrefrefrefrefrefrefre
  438. 4510 ifwv(0)=17thennw=33
  439. 4520 ifwv(0)=33thennw=65
  440. 4530 ifwv(0)=65thennw=17
  441. 4540 printsd$"            waveform"nw:forpp=1to500:next
  442. 4550 ifnw=0thennw=17
  443. 4560 forpp=0to2:wv(pp)=nw:next
  444. 4570 rem other changes
  445. 4580 rem"[184][184][184][184][184][184][184][184][184][184][184][184][184]
  446. 4590 [142]
  447. 4600 [143] hands
  448. 4610 [143]"frefrefrefrefre
  449. 4620 forpp=0to62:readx:poke832+pp,x:next
  450. 4630 forpp=0to62:readx:poke704+pp,x:next
  451. 4640 poke2042,13:poke2043,11:pokevd+21,0
  452. 4650 pokevd+41,09:pokevd+42,09:rem colour
  453. 4660 pokevd+23,12:pokevd+29,12:rem expand
  454. 4670 pokevd+27,0:rem priority
  455. 4680 return
  456. 4690 data1,128,0,2,64,0,3,193,128,3,194,64
  457. 4700 data3,195,192,3,199,156,3,199,60,227,207,123
  458. 4710 data243,222,247,123,221,238,63,255,254
  459. 4720 data31,255,248,15,255,240,15,255,224,7,255
  460. 4730 data224,7,255,224,7,255,224,3,255,224
  461. 4740 data1,255,192,0,128,64,0,255,192
  462. 4750 data0,1,128,0,2,64,1,131,192,2,67,192
  463. 4760 data27,227,192,61,227,192,222,243,199,239
  464. 4770 data115,207,247,251,222,125,255,252
  465. 4780 data63,255,248,31,255,248,15,255,248,7,255,248
  466. 4790 data3,255,248,3,255,248,3,255,240,3,255
  467. 4800 data224,1,255,192,0,192,64,0,255,192
  468. 4810 rem error status
  469. 4820 rem"[184][184][184][184][184][184][184][184][184][184][184][184]
  470. 4830 [132]15,e0,e1$,e2,e3$
  471. 4840 [139]e0[178]0[167][142]
  472. 4850 [141]3710:[153]sd$""e1$
  473. 4860 [129]pp[178]1[164]1000:[130]:[141]3710:[142]
  474. 4870 [143]***********************
  475. 4880 :
  476. 4890 [143]**  introductory tune **
  477. 4900 :
  478. 4910 [143]************************
  479. 4920 [135]m:[129]i[178]1[164]m
  480. 4930 [135]n(i),p(i):[130]:[141]5060:[137]1320
  481. 4940 [131] 103
  482. 4950 [131]12,2,8,2,10,2,12,2,15,2,13,2,13,2,17,2,15,2,15,2
  483. 4960 [131]20,2,19,2,20,2,15,2,12,2,8,2,10,2,12,2,13,2,15,2
  484. 4970 [131]17,2,15,2,13,2,12,2,10,2,12,2,8,2,7,2,8,2,10,2
  485. 4980 [131]3,2,7,2,10,2,13,2,12,2,10,2,12,2,8,2,10,2,12,2
  486. 4990 [131]15,2,13,2,13,2,17,2,15,2,15,2,20,2,19,2,20,2,15,2
  487. 5000 [131]12,2,8,2,10,2,12,2,5,2,15,2,13,2,12,2,10,2,8,2
  488. 5010 [131]3,2,8,2,7,2,8,2,12,2,15,2,20,2,15,2,12,2,8,2
  489. 5020 [131]12,2,15,2,18,2,15,2,12,2,8,2,12,2,15,2,17,2,13,2
  490. 5030 [131]10,2,7,2,10,2,13,2,15,2,12,2,8,2,5,2,8,2,12,2
  491. 5040 [131]13,2,10,2,7,2,3,2,7,2,10,2,13,2,12,2,10,2,8,2
  492. 5050 [131]12,2,15,2,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  493. 5060 [153]""[166]12)"**** jesu joy ****"
  494. 5070 [143]"
  495. 5080 rem" change name ^^^^^ and save!
  496. 5090 [142]
  497. 5100 [143] release all voices
  498. 5110 [143]"frefrefrefrefrefrefrefrefrefrefrefrefrefrefrefrefrefre
  499. 5120 forvv=0to2:pokesid++4+7*vv,wv(vv)-1:next:vv=0
  500. 5130 forpp=1to80*re:next:return
  501. 5140 rem release previous voice
  502. 5150 rem"[184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184]
  503. 5160 [151]sid[170]4[170]7[172]pv,wv(pv)[171]1
  504. 5170 [142]
  505. 5180 [143] stop sid
  506. 5190 [143]"frefrefrefrefrefrefrefre
  507. 5200 forpp=oto2:pokesid+4+7*pp,0:next:vv=0:return
  508. 5210 gosub3710:printsd$;:input"which drive   0[157][157][157]";dr$:gosub3710:b=30:an=1
  509. 5220 printsd$"hit return[146] when ready to select song."
  510. 5230 open15,8,15
  511. 5240 open2,8,0,"$"+dr$+":*=s"
  512. 5250 get#2,a$:get#2,a$:i$=""
  513. 5260 getb$:ifst<>0orb$<>""then5360
  514. 5270 fora=1tob:get#2,a$
  515. 5280 ifa$=""thena$=chr$(0)
  516. 5290 i$=i$+a$:next:ifan=1then5340
  517. 5300 printsd$"                                     ":pp=7
  518. 5310 u1$=mid$(i$,pp,19):ifleft$(u1$,1)<>chr$(34)thenpp=pp+1:ifpp<19then5310
  519. 5320 ifpp>19then100
  520. 5330 ifmid$(u1$,2,1)=" "thenprintsd$""u1$
  521. 5340 fori1=1to10:i2=tan(i1):next
  522. 5350 an=0:i$="":b=32:goto5260
  523. 5360 close2:close15:return
  524.